package com.ruoyi.system.domain.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.enums.HttpMethodEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.List;

/**
 * @author nanyang
 */
public class TTaskJobDto {

    @Data
    @ApiModel("新增任务")
    public static class Insert {
        @ApiModelProperty("任务类型（1：抓取，2：上报）")
        private Byte jobType;
        @ApiModelProperty("任务ID（任务表的三主键之一）")
        private Long jobId;
        @ApiModelProperty("任务名称（任务表的三主键之一）")
        private String jobName;
        @ApiModelProperty("任务组名（任务表的三主键之一）")
        private String jobGroup;
        @ApiModelProperty("调用目标字符串")
        private String invokeTarget;
        @ApiModelProperty("cron执行表达式")
        private String cronExpression;
        @ApiModelProperty("计划执行错误策略（1立即执行 2执行一次 3放弃执行）")
        private Byte misfirePolicy;
        @ApiModelProperty("是否并发执行（0允许 1禁止）")
        private Byte concurrent;
        @ApiModelProperty("状态（0正常 1暂停）")
        private Byte status;
    }

    @Data
    @ApiModel("修改任务")
    public static class Update {
        @ApiModelProperty("ID")
        private Long id;
        @ApiModelProperty("任务类型（1：抓取，2：上报）")
        private Byte jobType;
        @ApiModelProperty("任务ID（任务表的三主键之一）")
        private Long jobId;
        @ApiModelProperty("任务名称（任务表的三主键之一）")
        private String jobName;
        @ApiModelProperty("任务组名（任务表的三主键之一）")
        private String jobGroup;
        @ApiModelProperty("调用目标字符串")
        private String invokeTarget;
        @ApiModelProperty("cron执行表达式")
        private String cronExpression;
        @ApiModelProperty("计划执行错误策略（1立即执行 2执行一次 3放弃执行）")
        private Byte misfirePolicy;
        @ApiModelProperty("是否并发执行（0允许 1禁止）")
        private Byte concurrent;
        @ApiModelProperty("状态（0正常 1暂停）")
        private Byte status;
    }

    @Data
    @ApiModel("删除任务")
    public static class Delete {
        @ApiModelProperty("删除ID")
        private List<Long> idList;
    }


    @Data
    @ApiModel("查询任务")
    public static class Query {
        @ApiModelProperty("任务类型（1：抓取，2：上报）")
        private Byte jobType;
        @ApiModelProperty("计划执行错误策略（1立即执行 2执行一次 3放弃执行）")
        private Byte misfirePolicy;
        @ApiModelProperty("是否并发执行（0允许 1禁止）")
        private Byte concurrent;
        @ApiModelProperty("状态（0正常 1暂停）")
        private Byte status;
    }

    @Data
    @ApiModel("新增任务扩展信息")
    public static class ExtendInsert {
        @ApiModelProperty("任务主表ID")
        private Long taskId;
        @ApiModelProperty("任务执行方式(1接口、2视图)")
        private Byte mode;
        @ApiModelProperty("任务的权限方式(三方分配的APPID等)")
        private String method;
        @ApiModelProperty("三方公司")
        private String companyName;
        @ApiModelProperty("三方联系人")
        private String contract;
        @ApiModelProperty("接口文档附件 file")
        private String filePath;
    }

    @Data
    @ApiModel("修改任务扩展信息")
    public static class ExtendUpdate {
        @ApiModelProperty("id")
        private Long id;
        @ApiModelProperty("任务主表ID")
        private Long taskId;
        @ApiModelProperty("任务执行方式(1接口、2视图)")
        private Byte mode;
        @ApiModelProperty("任务的权限方式(三方分配的APPID等)")
        private String method;
        @ApiModelProperty("三方公司")
        private String companyName;
        @ApiModelProperty("三方联系人")
        private String contract;
        @ApiModelProperty("接口文档附件 file")
        private String filePath;
    }

    @Data
    @ApiModel("删除任务扩展信息")
    public static class ExtendDelete {
        @ApiModelProperty("id集合")
        private List<Long> idList;
    }

    @Data
    @ApiModel("任务日志查询")
    public static class LogQuery {
        @ApiModelProperty("任务类型")
        private Byte jobType;
        @ApiModelProperty("接口名称")
        private String name;
        @ApiModelProperty("APPID")
        private String appId;
        @ApiModelProperty("调用状态  0成功、1失败")
        private Byte status;

        @ApiModelProperty("开始时间，格式为yyyy-MM-dd HH:mm:ss")
        @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date startTime;

        @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        @ApiModelProperty("结束时间，格式为yyyy-MM-dd HH:mm:ss")
        private Date endTime;
    }

}
